package com.geline.easyexcel.compute;

import java.util.Set;
import java.util.TreeSet;

/**
 * 数组排列组合计算
 *
 * @author: mengxin
 * @date: 2024/1/22 20:37
 */
public class ArrayComputeUtil {

    /**
     * 获取所有排列组合
     * @param arr
     * @param disorder 是否无序:true返回数据不管先后顺序
     * @return
     */
    public static Set<String> sortByString(String[] arr, boolean disorder){
        Set<String> list = new TreeSet<>();
        for (int i = 0; i < arr.length; i++) {
            list.addAll(sortByString(arr, i+1, disorder));
        }
        return list;
    }

    /**
     * 获取指定个数的排列组合
     * @param arr
     * @param n
     * @param disorder 是否无序:true返回数据不管先后顺序
     * @return
     */
    public static Set<String> sortByString(String[] arr, int n, boolean disorder){
        StringArrayCompute compute = new StringArrayCompute();
        Set<String> list = compute.calculate(arr, n, disorder);
        return list;
    }

    /**
     * 获取所有排列组合
     * @param arr
     * @param disorder 是否无序:true返回数据不管先后顺序
     * @return
     */
    public static Set<String> sortByInteger(Integer[] arr, boolean disorder){
        Set<String> list = new TreeSet<>();
        for (int i = 0; i < arr.length; i++) {
            list.addAll(sortByInteger(arr, i+1, disorder));
        }
        return list;
    }

    /**
     * 获取指定个数的排列组合
     * @param arr
     * @param n
     * @param disorder 是否无序:true返回数据不管先后顺序
     * @return
     */
    public static Set<String> sortByInteger(Integer[] arr, int n, boolean disorder){
        IntegerArrayCompute compute = new IntegerArrayCompute();
        Set<String> list = compute.calculate(arr, n, disorder);
        return list;
    }
}
